package DAO;

import Codigo.LocaisVisitados;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class LocalVisitadoDAO {
    public boolean Cadastrar(LocaisVisitados obj)
    {
        Boolean retorno = false;
        String sql = "INSERT INTO localvisitado (nome, atendente, imagem)" 
                + "VALUES(?,?,?)";
        PreparedStatement pst = Conexao.getPreparedStatement(sql);
                    try {
            //adicionar os parâmetros
                        //relacionar as informações digitadas com os ?
                        pst.setString(1, obj.getNomelocal());
                        pst.setString(2, obj.getNomeatendente());
                        pst.setBytes(3, obj.getImagem());
                        //Executar o insert
                        Integer resultado = pst.executeUpdate();
                        if (resultado > 0) {
                            retorno = true;
                        } else {
                            retorno = false;
                        }
                    } catch (SQLException ex) {
                        System.out.println("Erro ao acessar o banco");
                        return false;
                    }
        return retorno;
    }
    
     public boolean Alterar(LocaisVisitados obj)
    {
        Boolean retorno = false;
        String sql = "UPDATE localvisitado SET nome=?, atendente=? WHERE localvisitadoid=?";
        PreparedStatement pst = Conexao.getPreparedStatement(sql);
                    try {
            //adicionar os parâmetros
                        //relacionar as informações digitadas com os ?
                        pst.setString(1, obj.getNomelocal());
                        pst.setString(2, obj.getNomeatendente());
                        pst.setInt(3, obj.getLocalvisitadoid());
                        //Executar o insert
                        Integer resultado = pst.executeUpdate();
                        if (resultado > 0) {
                            retorno = true;
                        } else {
                            retorno = false;
                        }
                    } catch (SQLException ex) {
                        System.out.println("Erro ao acessar o banco");
                        return false;
                    }
        return retorno;
    }
    
    public List<LocaisVisitados> Listar()
    {
    List<LocaisVisitados> lista = new ArrayList<LocaisVisitados>();
        String sql = "SELECT * FROM localvisitado";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {
                        ResultSet resultado = psm.executeQuery();
                        
                        while(resultado.next())
                        {
                            LocaisVisitados obj = new LocaisVisitados();
                            obj.setLocalvisitadoid(resultado.getInt("localvisitadoid"));
                            obj.setNomelocal(resultado.getString("nome"));
                            obj.setNomeatendente(resultado.getString("atendente"));
                            obj.setImagem(resultado.getBytes("imagem"));
                            //adiciona na lista
                            lista.add(obj);
                        }
                    } catch (SQLException ex) {
                        lista = null;
                     
                    }
        return lista;
    }
    
    public List<LocaisVisitados> Listar(String filtro)
    {
    List<LocaisVisitados> lista = new ArrayList<LocaisVisitados>();
        String sql = "SELECT * FROM localvisitado WHERE nome ILIKE '%"+filtro+"%'";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {
                        
                        ResultSet resultado = psm.executeQuery();
                        
                        while(resultado.next())
                        {
                            LocaisVisitados obj = new LocaisVisitados();
                            obj.setLocalvisitadoid(resultado.getInt("localvisitadoid"));
                            obj.setNomelocal(resultado.getString("nome"));
                            obj.setNomeatendente(resultado.getString("atendente"));
                            obj.setImagem(resultado.getBytes("imagem"));
                            //adiciona na lista
                            lista.add(obj);
                        }
                    } catch (SQLException ex) {
                        lista = null;
                     
                    }
        return lista;
    }
    public Boolean Excluir(LocaisVisitados obj)
    {
        Boolean retorno = false;
        //MONTA A STRING DE EXCLUSÃO A PARTIR DA CHAME PRIMÁRIA
        String sql = "DELETE FROM localvisitado WHERE localvisitadoid=?";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
        try{
            psm.setInt(1, obj.getLocalvisitadoid());
            Integer resultado = psm.executeUpdate();
            if(resultado>0)
            {
                retorno = true;
            }
            else
            {
                retorno = false;
            }
        }
        catch (SQLException ex){
            System.out.println("BD: "+ ex.getMessage());
            }
        return retorno;
    }
    
    public LocaisVisitados Consultar(LocaisVisitados obj2) {

        String sql = "SELECT * FROM localvisitado WHERE nome ILIKE %?%";
        LocaisVisitados obj = null;
        PreparedStatement psm = Conexao.getPreparedStatement(sql);

        try {
            psm.setString(1, obj2.getNomeatendente());
            ResultSet resultado = psm.executeQuery();

            if (resultado.next()) {
                obj = new LocaisVisitados();
                obj.setLocalvisitadoid(resultado.getInt("localvisitadoid"));
                obj.setNomeatendente(resultado.getString("atendente"));
                obj.setNomelocal(resultado.getString("nome"));

            }

        } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco: " + ex.getMessage().toString());

        }

        return obj;
    }
}